﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KBManagement.DAL;
using KBManagement.Library;

namespace KBManagement
{
    public partial class DialogAddService : Form
    {
        KBSQLClassDataContext context;
        private Food food;
        public DialogAddService(Food food,string Id)
        {
            this.food = food;
            context = Utils.CreateInstance().GetDBContext();
            InitializeComponent();
            BindingComboBox();
            cbbCateId.SelectedValue = Convert.ToInt32(Id);
            if (food != null)
            {
                lblTitleService.Text = "Cập nhật dịch vụ";
                txtNamePro.Text = food.Fo_Name;
                txtPricePro.Text = food.Price.ToString();
                cbbCateId.SelectedValue = food.FoodCategoryID;
            }
            else
            {
                lblTitleService.Text = "Thêm mới một dịch vụ";
            }
        }

        private void BindingComboBox()
        {
            var category = from fc in context.FoodCaterories select fc;
            cbbCateId.DataSource = category;
            cbbCateId.DisplayMember = "Name";
            cbbCateId.ValueMember = "ID";
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            try
            {
                bool isValid = validate();

                if (isValid)
                {
                    if (food != null)
                    {
                        UpdateFood();
                    }
                    else
                    {
                        InsertFood();
                    }
                }
            }
            catch (Exception ex)
            {
                
                MessageBox.Show("Thông tin bạn nhập có thể không lưu được vì xảy ra lỗi.Lỗi đã được hệ thống ghi lại và chờ xử lý"+ex.Message.ToString());
            }

        }

        private void UpdateFood()
        {
                Food f = context.Foods.SingleOrDefault(x => x.ID == food.ID);
                f.Fo_Name = txtNamePro.Text;
                f.Price = Convert.ToDecimal(txtPricePro.Text);
                f.FoodCategoryID = Convert.ToInt32(cbbCateId.SelectedValue);
                context.SubmitChanges();
                Utils.CreateInstanceLog().TransactionLogCommon("Nhân viên " + AdminSession.admin.UserName + " sửa dịch vụ " + food.Fo_Name + " mã số "+food.ID+" vào lúc " + DateTime.Now);
                Utils.CreateInstance().NotificationInforObserver();
                Close();
        }

        private void InsertFood()
        {
                var pro = new Food
                {
                    Fo_Name = txtNamePro.Text,
                    Price = Convert.ToDecimal(txtPricePro.Text),
                    Status = true,
                    FoodCategoryID = Convert.ToInt32(cbbCateId.SelectedValue.ToString())
                };
                context.Foods.InsertOnSubmit(pro);
                AddEditComponent addEditComponent = new AddEditComponent(pro);
                addEditComponent.ShowDialog();
                Utils.CreateInstance().NotificationInforObserver();
                Close();
        }

        public bool validate()
        {
            if (txtNamePro.Text == "")
            {
                MessageBox.Show("Xin mời bạn điền tên cho dịch vụ");
                return false;
            }
            else if (txtPricePro.Text == "")
            {
                MessageBox.Show("Xin mời bạn điền giá cho dịch vụ");
                return false;
            }
            return true;
        }
    }
}
